version: 2
jobs:
  build:
    docker:
      - image: circleci/python:3.6.1

    working_directory: ~/repo

    steps:
      - checkout

      - restore_cache:
          keys:
          - v1-dependencies-{{ checksum "requirements.txt" }}
          - v1-dependencies-

      - run:
          name: install dependencies
          command: |
            python3 -m venv venv
            . venv/bin/activate
            pip install -r requirements.txt
      - save_cache:
          paths:
            - ./venv
          key: v1-dependencies-{{ checksum "requirements.txt" }}

      - run:
          name: run tests
          command: |
            . venv/bin/activate
            python -m unittest test.py
      - store_artifacts:
          path: test-reports
          destination: test-reports

  deploy:
    docker:
      - image: circleci/python:3.6.1

    working_directory: ~/repo

    steps:
      - checkout

      - restore_cache:
          key: v1-dependency-cache-{{ checksum "setup.py" }}-{{ checksum "Makefile" }}

      - run:
          name: verify git tag vs. version
          command: |
            python3 -m venv venv
            . venv/bin/activate
            python setup.py verify
            pip install twine
      - save_cache:
          key: v1-dependency-cache-{{ checksum "setup.py" }}-{{ checksum "Makefile" }}
          paths:
          - "venv"

      # Deploying to PyPI
      # for pip install kor2vec
      - run:
          name: init .pypirc
          command: |
            echo -e "[pypi]" >> ~/.pypirc
            echo -e "username = codertimo" >> ~/.pypirc
            echo -e "password = $PYPI_PASSWORD" >> ~/.pypirc
      - run:
          name: create packages
          command: |
            make package
      - run:
          name: upload to pypi
          command: |
            . venv/bin/activate
            twine upload dist/*
workflows:
  version: 2
  build_and_deploy:
    jobs:
      - build:
          filters:
            tags:
              only: /.*/
      - deploy:
          requires:
            - build
          filters:
            tags:
              only: /.*/
            branches:
              ignore: /.*/